Add configure-time check for Linux HID.
authorrobertl <robertl>
Sat, 27 Jun 2009 23:17:02 +0000 (23:17 +0000)
committerrobertl <robertl>
Sat, 27 Jun 2009 23:17:02 +0000 (23:17 +0000)
config.h.in
configure
configure.in
delbin.c

index ff1bfe607baddab5fe8d8f41f2347d4575fdc266..acb907a92692c3bc8c47708b923fb443c885b502 100644 (file)
@@ -18,6 +18,9 @@
 /* Defined if you have libusb */
 #undef HAVE_LIBUSB
 
+/* Defined if you have Linux HID interface */
+#undef HAVE_LINUX_HID
+
 /* Define to 1 if you have the `z' library (-lz). */
 #undef HAVE_LIBZ
 
index c3cac35efb567fcc5a4fb219e50c3bd496e1a3e2..7a4bae7a6e5f62641cf6d22d4a49f82687fdd05e 100755 (executable)
--- a/configure
+++ b/configure
@@ -680,7 +680,6 @@ INSTALL_PROGRAM
 INSTALL_SCRIPT
 INSTALL_DATA
 SET_MAKE
-
 CPP
 GREP
 EGREP
@@ -4333,6 +4332,62 @@ esac
 
 
 
+case "$target" in
+       *-linux-*)
+       { echo "$as_me:$LINENO: checking for Linux HID interface" >&5
+echo $ECHO_N "checking for Linux HID interface... $ECHO_C" >&6; }
+       cat >conftest.$ac_ext <<_ACEOF
+
+               #include <sys/ioctl.h>
+               #include <linux/types.h>
+               #include <linux/hiddev.h>
+               #include <linux/hidraw.h>
+               void f(void) {
+                       struct hidraw_devinfo info;
+                       struct hiddev_field_info finfo;
+                       struct hiddev_usage_ref_multi urefm;
+                       struct hiddev_report_info rinfo;
+                       ioctl(0, HIDIOCGRAWINFO, &info);
+                       ioctl(0, HIDIOCGFIELDINFO, &finfo);
+                       ioctl(0, HIDIOCSUSAGES, &urefm);
+                       ioctl(0, HIDIOCSREPORT, &rinfo);
+               }
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+               cat >>confdefs.h <<\_ACEOF
+#define HAVE_LINUX_HID 1
+_ACEOF
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       ;;
+esac
+
 { echo "$as_me:$LINENO: checking for random stuff to make you feel better" >&5
 echo $ECHO_N "checking for random stuff to make you feel better... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: failed" >&5
index 397ef4a086eae2b497bdae77472a41663dbc09ab..3136eccb19e2b80e242c08d066df24adf685fc24 100644 (file)
@@ -36,7 +36,7 @@ AC_PROG_CC
 AC_PROG_INSTALL
 AC_PROG_MAKE_SET
 AC_EXEEXT
-AC_SUBST(AC_EXEEXT)
+AC_SUBST(EXEEXT)
 AC_C_BIGENDIAN
 
 # Checks for libraries.
@@ -206,6 +206,31 @@ AC_SUBST(OSJEEPS)
 AC_SUBST(GBSER)
 AC_SUBST(ZLIB)
 
+dnl Linux HID support
+case "$target" in
+       *-linux-*)
+       AC_MSG_CHECKING(for Linux HID interface)
+       AC_COMPILE_IFELSE([
+               #include <sys/ioctl.h>
+               #include <linux/types.h>
+               #include <linux/hiddev.h>
+               #include <linux/hidraw.h>
+               void f(void) {
+                       struct hidraw_devinfo info;
+                       struct hiddev_field_info finfo;
+                       struct hiddev_usage_ref_multi urefm;
+                       struct hiddev_report_info rinfo;
+                       ioctl(0, HIDIOCGRAWINFO, &info);
+                       ioctl(0, HIDIOCGFIELDINFO, &finfo);
+                       ioctl(0, HIDIOCSUSAGES, &urefm);
+                       ioctl(0, HIDIOCSREPORT, &rinfo);
+               }],
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_LINUX_HID, 1),
+               AC_MSG_RESULT(no))
+       ;;
+esac
+
 AC_MSG_CHECKING(for random stuff to make you feel better)
 AC_MSG_RESULT(failed)
 
index cf60ff9c64f97e7255e9913f46202a020fbc528b..eebdac42ebad1985bbfc79a87405e294e0453b53 100644 (file)
--- a/delbin.c
+++ b/delbin.c
@@ -2424,7 +2424,7 @@ libusb_os_packet_write(const void* buf, unsigned size)
        return n;
 }
 
-#if __linux
+#if HAVE_LINUX_HID
 static const delbin_os_ops_t libusb_os_ops =
 #else
 delbin_os_ops_t delbin_os_ops =
@@ -2440,7 +2440,7 @@ delbin_os_ops_t delbin_os_ops =
 
 //-----------------------------------------------------------------------------
 // Linux
-#if __linux
+#if HAVE_LINUX_HID
 
 #include <unistd.h>
 #include <fcntl.h>
@@ -2617,11 +2617,11 @@ delbin_os_ops_t delbin_os_ops = {
        NULL
 };
 
-#endif // __linux
+#endif // HAVE_LINUX_HID
 
 //-----------------------------------------------------------------------------
 // stubs
-#if !(_WIN32 || __linux || __APPLE__ || HAVE_LIBUSB)
+#if !(_WIN32 || __APPLE__ || HAVE_LIBUSB || HAVE_LINUX_HID)
 static void
 stub_os_init(const char* fname)
 {